# 魔法方法
# 创建一个对象的过程，自动调用的方法顺序为

# __new__(cls[, ...] 第一个参数 cls 就是类，该方法返回一个对象self然后传递给 __init__ 方法
# __init__(self[, ...]


# 当一个对象被创建的时候，第一个调用的方法就是 __new__

class CapStr(str):  # 继承自字符串类 str
    def __new__(cls, string):
        # 无脑转大写
        string = string.upper()
        # 之后交给 str 的 __new__ 方法
        return super().__new__(cls, string)


cs = CapStr("FishC")
print(cs)  # FISHC
print(cs.lower())  # fishc

